aboutsummaryrefslogtreecommitdiffstats
path: root/dot_product/student_files_2015[2]/student_files_2015/prj2/quartus_proj/DE0_CAMERA/V/I2C_CCD_Config.v
diff options
context:
space:
mode:
Diffstat (limited to 'dot_product/student_files_2015[2]/student_files_2015/prj2/quartus_proj/DE0_CAMERA/V/I2C_CCD_Config.v')
-rw-r--r--dot_product/student_files_2015[2]/student_files_2015/prj2/quartus_proj/DE0_CAMERA/V/I2C_CCD_Config.v287
1 files changed, 0 insertions, 287 deletions
diff --git a/dot_product/student_files_2015[2]/student_files_2015/prj2/quartus_proj/DE0_CAMERA/V/I2C_CCD_Config.v b/dot_product/student_files_2015[2]/student_files_2015/prj2/quartus_proj/DE0_CAMERA/V/I2C_CCD_Config.v
deleted file mode 100644
index 11d3a70..0000000
--- a/dot_product/student_files_2015[2]/student_files_2015/prj2/quartus_proj/DE0_CAMERA/V/I2C_CCD_Config.v
+++ /dev/null
@@ -1,287 +0,0 @@
-// --------------------------------------------------------------------
-// Copyright (c) 2007 by Terasic Technologies Inc.
-// --------------------------------------------------------------------
-//
-// Permission:
-//
-// Terasic grants permission to use and modify this code for use
-// in synthesis for all Terasic Development Boards and Altera Development
-// Kits made by Terasic. Other use of this code, including the selling
-// ,duplication, or modification of any portion is strictly prohibited.
-//
-// Disclaimer:
-//
-// This VHDL/Verilog or C/C++ source code is intended as a design reference
-// which illustrates how these types of functions can be implemented.
-// It is the user's responsibility to verify their design for
-// consistency and functionality through the use of formal
-// verification methods. Terasic provides no warranty regarding the use
-// or functionality of this code.
-//
-// --------------------------------------------------------------------
-//
-// Terasic Technologies Inc
-// 356 Fu-Shin E. Rd Sec. 1. JhuBei City,
-// HsinChu County, Taiwan
-// 302
-//
-// web: http://www.terasic.com/
-// email: support@terasic.com
-//
-// --------------------------------------------------------------------
-//
-// Major Functions: I2C_CCD_Config
-//
-// --------------------------------------------------------------------
-//
-// Revision History :
-// --------------------------------------------------------------------
-// Ver :| Author :| Mod. Date :| Changes Made:
-// V1.0 :| Johnny FAN :| 07/07/09 :| Initial Revision
-// V2.0 :| Rui Duarte :| 16/03/14 :| CCD config, spelling
-// --------------------------------------------------------------------
-
-module I2C_CCD_Config ( // Host Side
- iCLK,
- iRST_N,
- iUART_CTRL,
- iZOOM_MODE_SW,
- iEXPOSURE_ADJ,
- iEXPOSURE_DEC_p,
- // I2C Side
- I2C_SCLK,
- I2C_SDAT
- );
-
-// Host Side
-input iCLK;
-input iRST_N;
-input iUART_CTRL;
-input iZOOM_MODE_SW;
-
-// I2C Side
-output I2C_SCLK;
-inout I2C_SDAT;
-
-// Internal Registers/Wires
-reg [15:0] mI2C_CLK_DIV;
-reg [31:0] mI2C_DATA;
-reg mI2C_CTRL_CLK;
-reg mI2C_GO;
-wire mI2C_END;
-wire mI2C_ACK;
-reg [23:0] LUT_DATA;
-reg [5:0] LUT_INDEX;
-reg [3:0] mSetup_ST;
-
-////////////// CMOS sensor registers setting //////////////////////
-
-input iEXPOSURE_ADJ;
-input iEXPOSURE_DEC_p;
-
-parameter default_exposure = 16'h07c0;
-parameter exposure_change_value = 16'd200;
-
-
-// `define ENABLE_TEST_PATTERN 1
-
-
-reg [24:0] combo_cnt;
-wire combo_pulse;
-
-reg [1:0] izoom_mode_sw_delay;
-
-reg [3:0] iexposure_adj_delay;
-wire exposure_adj_set;
-wire exposure_adj_reset;
-reg [15:0] sensor_exposure;
-
-wire [23:0] sensor_start_row;
-wire [23:0] sensor_start_column;
-wire [23:0] sensor_row_size;
-wire [23:0] sensor_column_size;
-wire [23:0] sensor_row_mode;
-wire [23:0] sensor_column_mode;
-
-assign sensor_start_row = iZOOM_MODE_SW ? 24'h010036 : 24'h010000;
-assign sensor_start_column = iZOOM_MODE_SW ? 24'h020010 : 24'h020000;
-assign sensor_row_size = iZOOM_MODE_SW ? 24'h0303BF : 24'h03077F;
-assign sensor_column_size = iZOOM_MODE_SW ? 24'h0404FF : 24'h0409FF;
-assign sensor_row_mode = iZOOM_MODE_SW ? 24'h220000 : 24'h220011;
-assign sensor_column_mode = iZOOM_MODE_SW ? 24'h230000 : 24'h230011;
-
-
-always@(posedge iCLK or negedge iRST_N)
- begin
- if (!iRST_N)
- begin
- iexposure_adj_delay <= 0;
- end
- else
- begin
- iexposure_adj_delay <= {iexposure_adj_delay[2:0],iEXPOSURE_ADJ};
- end
- end
-
-assign exposure_adj_set = ({iexposure_adj_delay[0],iEXPOSURE_ADJ}==2'b10) ? 1 : 0 ;
-assign exposure_adj_reset = ({iexposure_adj_delay[3:2]}==2'b10) ? 1 : 0 ;
-
-always@(posedge iCLK or negedge iRST_N)
- begin
- if (!iRST_N)
- sensor_exposure <= default_exposure;
- else if (exposure_adj_set|combo_pulse)
- begin
- if (iEXPOSURE_DEC_p)
- begin
- if ((sensor_exposure < exposure_change_value)||
- (sensor_exposure == 16'h0))
- sensor_exposure <= 0;
- else
- sensor_exposure <= sensor_exposure - exposure_change_value;
- end
- else
- begin
- if (((16'hffff -sensor_exposure) <exposure_change_value)||
- (sensor_exposure == 16'hffff))
- sensor_exposure <= 16'hffff;
- else
- sensor_exposure <= sensor_exposure + exposure_change_value;
- end
- end
- end
-
-
-always@(posedge iCLK or negedge iRST_N)
- begin
- if (!iRST_N)
- combo_cnt <= 0;
- else if (!iexposure_adj_delay[3])
- combo_cnt <= combo_cnt + 1;
- else
- combo_cnt <= 0;
- end
-
-assign combo_pulse = (combo_cnt == 25'h1fffff) ? 1 : 0;
-
-wire i2c_reset;
-
-assign i2c_reset = iRST_N & ~exposure_adj_reset & ~combo_pulse ;
-
-/////////////////////////////////////////////////////////////////////
-
-// Clock Setting
-parameter CLK_Freq = 50000000; // 50 MHz
-parameter I2C_Freq = 20000; // 20 KHz
-// LUT Data Number
-parameter LUT_SIZE = 25;
-
-///////////////////// I2C Control Clock ////////////////////////
-always@(posedge iCLK or negedge i2c_reset)
-begin
- if(!i2c_reset)
- begin
- mI2C_CTRL_CLK <= 0;
- mI2C_CLK_DIV <= 0;
- end
- else
- begin
- if( mI2C_CLK_DIV < (CLK_Freq/I2C_Freq) )
- mI2C_CLK_DIV <= mI2C_CLK_DIV+1;
- else
- begin
- mI2C_CLK_DIV <= 0;
- mI2C_CTRL_CLK <= ~mI2C_CTRL_CLK;
- end
- end
-end
-////////////////////////////////////////////////////////////////////
-I2C_Controller u0 ( .CLOCK(mI2C_CTRL_CLK), // Controller Work Clock
- .I2C_SCLK(I2C_SCLK), // I2C CLOCK
- .I2C_SDAT(I2C_SDAT), // I2C DATA
- .I2C_DATA(mI2C_DATA), // DATA:[SLAVE_ADDR,SUB_ADDR,DATA]
- .GO(mI2C_GO), // GO transfor
- .END(mI2C_END), // END transfor
- .ACK(mI2C_ACK), // ACK
- .RESET(i2c_reset)
- );
-////////////////////////////////////////////////////////////////////
-////////////////////// Config Control ////////////////////////////
-//always@(posedge mI2C_CTRL_CLK or negedge iRST_N)
-always@(posedge mI2C_CTRL_CLK or negedge i2c_reset)
-begin
- if(!i2c_reset)
- begin
- LUT_INDEX <= 0;
- mSetup_ST <= 0;
- mI2C_GO <= 0;
-
- end
-
- else if(LUT_INDEX<LUT_SIZE)
- begin
- case(mSetup_ST)
- 0: begin
- mI2C_DATA <= {8'hBA,LUT_DATA};
- mI2C_GO <= 1;
- mSetup_ST <= 1;
- end
- 1: begin
- if(mI2C_END)
- begin
- if(!mI2C_ACK)
- mSetup_ST <= 2;
- else
- mSetup_ST <= 0;
- mI2C_GO <= 0;
- end
- end
- 2: begin
- LUT_INDEX <= LUT_INDEX+1;
- mSetup_ST <= 0;
- end
- endcase
- end
-end
-////////////////////////////////////////////////////////////////////
-///////////////////// Config Data LUT //////////////////////////
-always
-begin
- case(LUT_INDEX)
- 0 : LUT_DATA <= 24'h000000;
- 1 : LUT_DATA <= 24'h20c000; // Mirror Row and Columns
- 2 : LUT_DATA <= {8'h09,sensor_exposure};// Exposure
- 3 : LUT_DATA <= 24'h050000; // H_Blanking
- 4 : LUT_DATA <= 24'h060019; // V_Blanking
- 5 : LUT_DATA <= 24'h0A8000; // change latch
- 6 : LUT_DATA <= 24'h2B000b; // Green 1 Gain
- 7 : LUT_DATA <= 24'h2C000f; // Blue Gain
- 8 : LUT_DATA <= 24'h2D000f; // Red Gain
- 9 : LUT_DATA <= 24'h2E000b; // Green 2 Gain
- 10 : LUT_DATA <= 24'h100051; // set up PLL power on
- 11 : LUT_DATA <= 24'h111807; // PLL_m_Factor<<8+PLL_n_Divider
- 12 : LUT_DATA <= 24'h120002; // PLL_p1_Divider
- 13 : LUT_DATA <= 24'h100053; // set USE PLL
- 14 : LUT_DATA <= 24'h980000; // disble calibration
-`ifdef ENABLE_TEST_PATTERN
- 15 : LUT_DATA <= 24'hA00001; // Test pattern control
- 16 : LUT_DATA <= 24'hA10123; // Test green pattern value
- 17 : LUT_DATA <= 24'hA20456; // Test red pattern value
-`else
- 15 : LUT_DATA <= 24'hA00000; // Test pattern control
- 16 : LUT_DATA <= 24'hA10000; // Test green pattern value
- 17 : LUT_DATA <= 24'hA20FFF; // Test red pattern value
-`endif
- 18 : LUT_DATA <= sensor_start_row ; // set start row
- 19 : LUT_DATA <= sensor_start_column ; // set start column
-
- 20 : LUT_DATA <= sensor_row_size; // set row size
- 21 : LUT_DATA <= sensor_column_size; // set column size
- 22 : LUT_DATA <= sensor_row_mode; // set row mode in bin mode
- 23 : LUT_DATA <= sensor_column_mode; // set column mode in bin mode
- 24 : LUT_DATA <= 24'h4901A8; // row black target
- default:LUT_DATA <= 24'h000000;
- endcase
-end
-
-endmodule \ No newline at end of file